
/******************** 开始 ********************/
define(function(require) {

	var $  = jQuery;

    $.dialog = function(options){

        var defaults = {
                types : 'default',
                id : '',
                className :'',
                parentDom : null,
                titles : '提示',
                contents : '',
                width : 200,
                height : 110,
                ensure : '确定',
                cancel : '取消',
                times : 2000,
                close : '×',
                p : '',
                openFun : null,
                callback : null
            },

            options = $.extend(defaults, options),

            objs = {
                win : $('<div>').addClass('w_win show').attr("data-plugIn","dialog"),
                tops : $('<div>').addClass('w_top').html(options.titles),
                con : $('<div>').addClass('w_con').html(options.contents),
                bot : $('<div>').addClass('w_bot'),
                inp : $('<textarea>').attr('type','text').addClass('w_prompt').val(options.default),
                ensure : $('<a>').attr({'href':'javascript:;'}).addClass('w_ensure').html(options.ensure),
                cancel : $('<a>').attr({'href':'javascript:;'}).addClass('w_cancel').html(options.cancel),
                close : $('<a>').attr('href','javascript:;').addClass('w_close').html(options.close),
                bg : $('<div>').addClass('w_bg show').attr("data-plugIn","dialog")
            },

            dfunc = {

                init : function(){

                    var _t = this, DOM = '';

                    if(options.types == 'closeFun'){
                        var openDom = $("div[data-plugIn=\"dialog\"]");
                        openDom.removeClass("show");
                        setTimeout(function(){
                                openDom.remove();
                            },400);
                        return false;
                    };

                    objs.tops.append(objs.close);

                    if (options.types == 'alert'){

                        objs.win.addClass('w_alert');
                        objs.win.append(objs.tops);
                        objs.win.append(objs.con);
                        objs.win.append(objs.bot);
                        objs.bot.append(objs.ensure);

                        objs.ensure.click(function(){
                            if(options.callback){
                                options.callback(options.p);        //如果有事件 则先运行事件
                                return false;
                            }
                            _t.wClose();
                        });

                    } else if (options.types == 'confirm'){

                        objs.win.addClass('w_confirm');
                        objs.win.append(objs.tops);
                        objs.win.append(objs.con);
                        objs.win.append(objs.bot);
                        objs.bot.append(objs.cancel);

                                                objs.bot.append(objs.ensure);




                        objs.ensure.click(function(){
                            if(options.callback){
                                options.callback(options.p);    //如果有事件 则运行事件
                                return false;
                            };
                            _t.wClose();    //如果没有事件，则关闭弹窗
                        });


                    } else if (options.types == 'prompt'){

                        objs.win.addClass('w_prompt');
                        objs.win.append(objs.tops);
                        objs.win.append(objs.con);
                        objs.win.append(objs.bot);
                        objs.con.append(objs.inp);
                        objs.bot.append(objs.cancel);
                         objs.bot.append(objs.ensure);


                        // console.log(objs.con.find('textarea'))

                        // $('textarea.w_prompt').trigger('focus');
                        objs.ensure.click(function(){
                            if(options.callback){
                                options.callback(objs.inp.val(), options.p);
                            }
                            _t.wClose();    //如果没有事件，则关闭弹窗

                        });




                    } else if (options.types == 'loading'){

                        objs.win.append(objs.con);

                        objs.con.html(options.contents).css({"text-align":"center","line-height":options.height+"px","padding":0});

                        function t(i){

                            setTimeout(function(){
                                objs.con.append('.');
                                i++;

                                if(i < 4){
                                    t(i);
                                } else {
                                    objs.con.html(options.contents);
                                    t(0);
                                }

                            },500);

                        };

                        t(0);
                    } else if(options.types == 'moment'){
                        objs.win.append(objs.con);
                        objs.con.html(options.contents).css({"text-align":"center","line-height":options.height+"px","padding":0});

                        setTimeout(function(){
                            _t.wClose();
                        },options.times);

                        //点击背景 消失
                        objs.bg.click(function(){
                            _t.wClose();
                            return false;
                        });
                    } else if(options.types == 'default'){
                        objs.win.addClass('w_default');
                        objs.win.append(objs.tops);
                        objs.win.append(objs.con);
                    };

                    objs.close.click(function(){
                        _t.wClose();
                    });

                    objs.cancel.click(function(){
                        _t.wClose();
                    });

                    _t.even();
                },

                even : function(){

                    //添加样式
                    objs.win.css({
                        'width' : options.width,
                        'height' : options.height,
                        'margin-top' : window.scrollY -options.height/2,
                        'margin-left' : -options.width/2
                    })

                    //判断是否加了id
                    if(options.id){
                        objs.win.attr('id', options.id);
                    };

                    //判断是否加了className
                    if(options.className){
                        objs.win.addClass(options.className);
                    };

                    //判断是否传入父级
                    if(options.parentDom){
                        options.parentDom.append(objs.bg);
                        options.parentDom.append(objs.win);
                    } else {
                        //否则加入到body中
                        $('body').append(objs.bg);
                        $('body').append(objs.win);
                    };

                    //弹窗加入父级时  可传入运行的方法
                    if(options.openFun){
                        options.openFun();
                    };

                    // if($.browser.msie && $.browser.version == 6.0){
                    //     objs.bg.css("height",$("html").height());

                    //     $(window).on('scroll', function(){
                    //         objs.win.css({
                    //             "top" : $(document).scrollTop() + $("html").height()/2
                    //         });
                    //         objs.bg.css({
                    //             "top" : $(document).scrollTop()
                    //         });
                    //     });

                    // };
                },

                wClose : function(){
                    objs.win.removeClass("show");
                    objs.bg.removeClass("show");
	                objs.win.remove();
	                objs.bg.remove();
                }
            };

        dfunc.init();

    };

});